Skalare Werte vs. Tabellen
Skalare Werte speichern genau einen Wert, z.B. eine Zahl oder ein Datum.
Tabellen enthalten Zeilen und Spalten. Auch das Ergebnis einer SELECT-Abfrage, die genau eine Zeile und eine Spalte liefert, ist eine Tabelle. Diese Abfragen werden skalare Abfragen genannt.
Welche skalaren Ausdrücke gibt es?
Literale
Variablennamen
Spaltennamen
Funktionsaufrufe
SQL-Funktionen
Aggregatfunktionen
User Defined Functions (UDF)
Operatorausdrücke - Verknüpfung von Ausdrücken mit Operatoren
CASE-Ausdruck
(Korrelierte-) Unterabfragen
Ein Beispiel für unterschiedliche Ausdrücke
SELECT
-- Feldname als Ausdruck
id,
-- Verkettungsoperation als Ausdruck
firstname || ' ' || lastname AS name,
-- CASE-Ausdruck..
CASE sex
-- ..mit Funktionsaufruf als Ausdruck
WHEN 'F' THEN NCHAR(9792)
WHEN 'M' THEN NCHAR(9794)
ELSE ''
END
AS MW,
-- Funktionsaufruf als Ausdruck
COALESCE(team, 0) as team
FROM users;
Übungsaufgabe
Wo kann man Ausdrücke verwenden?
An allen Stellen wo ein Wert benötigt wird, kann man Ausdrücke verwenden.
Beispiel
Tabellenausdrücke
Tabellenausdrücke können dort verwendet weden, wo ein Tabellenname erwartet wird. Also z.B. in der FROM-Klausel:
Als Tabellenausdruck stehen zur Verfügung:
Namen von Datenbanktabellen oder -views
Tabellen-Funktionen
Lokale Tabellenvariablen
Unterabfragen
Prädikate
Ein Prädikat ist ein Ausdruck, der zu TRUE, FALSE oder UNKNOWN aufgelöst wird. Beispielsweise:
Vergleich (<, =, >, ….)
LIKE
BETWEEN
IS (NOT) NULL
EXISTS
IN
…
NULL
Bei NULL handelt es sich nicht um einen konkreten Wert, sondern um das Fehlen eines Wertes. Insbesondere handelt es sich nicht um einen gültigen Initialwert wie zum Beispiel 0 oder SPACE.
NULL wird in der Datenvorschau entweder als NULL oder als Fragezeichen dargestellt.
Ein Beispiel für NULL
Übungsaufgabe
Finde alle Zeilen, wo der Name nicht mit P anfängt
Ein Beispiel für NULL
NULL im BW
In Transformationsroutinen darf in der Ausgabetabelle der Wert eines Merkmals nicht NULL sein!
Rechnen mit NULL
NULL ist nicht definiert. Also ist auch das Ergebnis einer Berechnung mit NULL auch nicht definiert.
Ein NULL-Wert kann komplexe Ausdrücke infizieren, so dass das Endergebnis auch NULL ist.
Einfache Beispiele:
NULL + 5 = NULL
NULL || 'ABC' = NULL
NULL in Prädikaten
Über NULL lässt sich keine logische Aussage treffen. Die Bedingung
WHERE col1 = NULL;
ist niemals erfüllt.
NULL abfangen
Mit Funktionen NULL-Werte ersezten:
Datensätze mit IS NOT NULL ausfiltern:
Die Tabelle DUMMY
In jedem SAP HANA System existiert eine Tabelle mit Namen DUMMY. Diese hat eine Spalte mit dem Namen DUMMY und enthält genau eine Zeile mit dem Wert X. Der Inhalt von DUMMY kann nicht geändert werden.
Die Tabelle DUMMY ist sehr hilfreich beim Test von Ausdrücken oder zum Erzeugen von leeren Tabellen mit einer festen Struktur.
Beispiele für die Verwendung von DUMMY
Test eines Ausdrucks:
Erstellen einer leeren Tabelle mit zwei Spalten:
Weiteres Beispiel…
Fragen?